package com.ssy.jt808.gateway.sdk.terminal.constant.location;

import java.util.Map;
import java.util.TreeMap;

/**
 * @author wangzezhou
 */
public enum LocationAdditionInfoEnum{

  /** 0x01 里程,数据类型为DWORD,单位为1/10km,对应车上里程表读数 */
  Mileage(1),
  /** 0x02 油量,数据类型为WORD,单位为1/10L,对应车上油量表读数 */
  Fuel(2),
  /** 0x03 行驶记录功能获取的速度,数据类型为WORD,单位为1/10km/h */
  RecorderSpeed(3),
  /** 0x04 需要人工确认报警事件的ID,数据类型为WORD,从1开始计数 */
  AlarmEventId(4),
  /** 0x05 胎压,单位为Pa,标定轮子的顺序为从车头开始从左到右顺序排列,多余的字节为0xFF,表示无效数据 */
  TirePressure(5),
  /** 0x06 车厢温度,单位为摄氏度,取值范围为-32767~+32767,最高位为1表示负数 */
  CarriageTemperature(6),
  /** 0x11 超速报警附加信息见表28 */
  OverSpeedAlarm(17),
  /** 0x12 进出区域/路线报警附加信息见表29 */
  InOutAreaAlarm(18),
  /** 0x13 路段行驶时间不足/过长报警附加信息见表30 */
  RouteDriveTimeAlarm(19),
  /** 0x25 扩展车辆信号状态位,参数项格式和定义见表31 */
  Signal(37),
  /** 0x2a I0状态位,参数项格式和定义见表32 */
  IoState(42),
  /** 0x2b 模拟量,bit[0~15],AD0),bit[l6~31],ADl */
  AnalogQuantity(43),
  /** 0x30 数据类型为BYTE,无线通信网络信号强度 */
  SignalStrength(48),
  /** 0x31 数据类型为BYTE,GNSS定位卫星数 */
  GnssCount(49),
  /** 0x64 高级驾驶辅助系统报警 */
  AlarmADAS(100),
  /** 0x65 驾驶员行为监测报警 */
  AlarmDSM(101),
  /** 0x66 轮胎气压监测系统 */
  AlarmTPMS(102),
  /** 0x67 盲点监测 */
  AlarmBSD(103),
  /** 0x70 激烈驾驶 */
  AlarmAd(112),
  /** 0xF1 安装异常信息,由厂家自定义(粤标) */
  InstallErrorMsg(241),
  /** 0xF2 算法异常信息,由厂家自定义(粤标) */
  AlgorithmErrorMsg(242),
  ;

  LocationAdditionInfoEnum( int id ){
    this.id = id;
  }

  private final int id;

  public int id(){
    return id;
  }

  private static final Map<Integer,LocationAdditionInfoEnum> ID_MAP;

  static {
    ID_MAP = new TreeMap<>();
    LocationAdditionInfoEnum[] values = LocationAdditionInfoEnum.values();
    for(LocationAdditionInfoEnum value : values){
      ID_MAP.put(value.id, value);
    }
  }

  public static LocationAdditionInfoEnum map( int id ){
    LocationAdditionInfoEnum locationAdditionInfoEnum = ID_MAP.get(id);
    assert locationAdditionInfoEnum != null;
    return locationAdditionInfoEnum;
  }
}
